package com.shujia.day10;

class StudentArr{
    String name;
    int age;

    public StudentArr(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "我是"+name+"\t今年"+age+"了";
    }
}

public class Code11Collection {
    public static void main(String[] args) {
        /*
            在此之前我们学习了以下容器：
                1.数组：
                    优点：因为有索引，可以快速查询，对于不同类型的数组而言，可以存储不同类类型的数据，但是相同数组中只能存储一种类型
                    缺点：长度固定 增删慢
                2.StringBuffer
                    优点：长度可以随意变更，从对象中可以添加删除对应的数据，也有索引的概念
                    缺点：只能存储字符类型的数据 形成一个字符串 对于其他自定义类 不能进行存储
            所以Java提供了Collection集合相关的容器
         */


        StudentArr[] studentArrs = new StudentArr[3];
        studentArrs[0] = new StudentArr("张三",20);
        studentArrs[1] = new StudentArr("李四",21);
        studentArrs[2] = new StudentArr("王五",23);

        // 如果需要对数组中的对象进行操作，那么需要将对象进行遍历，再做相对于的操作
        // 增强for 取出数组中每一个对象
        for (StudentArr studentArr : studentArrs) {
            System.out.println(studentArr.toString());
        }

        // 如果要再原先数组基础上，再增加一个学生对象 怎么做？
        StudentArr[] newStudentArr = new StudentArr[studentArrs.length + 1];
        for (int i = 0; i < studentArrs.length; i++) {
            newStudentArr[i] =  studentArrs[i];
        }
        newStudentArr[newStudentArr.length-1] = new StudentArr("新添加学生对象",1);

        // 以上方式虽然可以 但是实现过于麻烦，所以需要一种新的数据结构来完成容器中更加灵活的操作

        for (StudentArr studentArr : newStudentArr) {
            System.out.println(studentArr);
        }
    }
}
